<?php
// 事务：一系列的数据库操作，要么都执行，要么都不执行
// 转账   A向B转账
// 1. A 减少500元
// 2. B 增加500元
// （1）开启事务 （2）提交事务，确认所有操作生效，（3）操作过程中出错，回滚事务
$dsn = 'mysql:host=localhost;dbname=phpcode20;charset=utf8';
$pdo = new PDO($dsn, 'root', '123456');


$pdo->beginTransaction();
$sql = 'update users set money = money - :money where id = :id';
$stmt = $pdo->prepare($sql);
$result = $stmt->execute([':money' => 500, ':id' => 1]);
if (!$result) {
    $pdo->rollBack();
    echo '转出失败'; exit;
}

$sql = 'update users set money = money + :money where id = :id';
$stmt = $pdo->prepare($sql);
$result = $stmt->execute([':money' => 500, ':id' => 2]);
if (!$result) {
    $pdo->rollBack();
    echo '转入失败'; exit;
}
$pdo->commit();
